package com.kamaro.action;

import com.kamaro.dao.EmbalagemDAO;
import com.kamaro.dao.ProdutoDAO;
import com.kamaro.dao.implementacao.HibernateEmbalagemDAO;
import com.kamaro.dao.implementacao.HibernateProdutoDAO;
import com.kamaro.form.CadastrarProdutoForm;
import com.kamaro.model.Embalagem;
import com.kamaro.model.Produto;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import java.util.List;

public class CadastrarProdutoAction extends DispatchAction {

    private ProdutoDAO dao = new HibernateProdutoDAO();
    private EmbalagemDAO daoEmbalagem = new HibernateEmbalagemDAO();

    public ActionForward unspecified(ActionMapping mapping, ActionForm form,
                                     javax.servlet.http.HttpServletRequest request,
                                     javax.servlet.http.HttpServletResponse response)
            throws Exception {
        CadastrarProdutoForm frm = (CadastrarProdutoForm) form;
        frm.init();
        List<Produto> lista = dao.listarProduto();
        frm.setListarProdutos(lista);
        List listaE = daoEmbalagem.listarAll();
        frm.setListaEmbalagem(listaE);
        return mapping.findForward("produto");
    }

    public ActionForward pegaObj(ActionMapping mapping, ActionForm form,
                                 javax.servlet.http.HttpServletRequest request,
                                 javax.servlet.http.HttpServletResponse response)
            throws Exception {
        CadastrarProdutoForm frm = (CadastrarProdutoForm) form;
        if(frm.getAcao().equals("alterar")) {
            int index = frm.getIndexList();
            frm.setProduto(frm.getListarProdutos().get(index));
        }
        return mapping.findForward("produto");
    }

    public ActionForward save(ActionMapping mapping, ActionForm form,
                              javax.servlet.http.HttpServletRequest request,
                              javax.servlet.http.HttpServletResponse response)
            throws Exception {

        CadastrarProdutoForm frm = (CadastrarProdutoForm) form;

        if(frm.getAcao().equals("alterar")) {
            dao.update(frm.getProduto());
        }
        else if(frm.getAcao().equals(""))  {
            dao.save(frm.getProduto());
        }
        return unspecified(mapping, form, request, response);
    }



    public ActionForward delete(ActionMapping mapping, ActionForm form,
                                javax.servlet.http.HttpServletRequest request,
                                javax.servlet.http.HttpServletResponse response)
            throws Exception {
        CadastrarProdutoForm frm = (CadastrarProdutoForm) form;
        int index = frm.getIndexList();
        Produto p = frm.getListarProdutos().get(index);
        dao.delete(p);
        return unspecified(mapping, form, request, response);
    }
}
